package com.huawei.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.huawei.bean.Address;
import com.huawei.bean.OrdersDetail;

import com.huawei.db.DBProvider;
import com.huawei.utils.EasyFactory;
import com.huawei.utils.MyUtils;

public class OrderModel {
		/**
		 * 查询所有的订单信息
		 * 
		 * @return 查询结果集
		 */
		public List<OrdersDetail> queryOrdersDetail(){
			// 拼写登录查询的sql语句
			//String strSql = " select * from muserinfo order by muser_id desc ";
			String strSql = "select o.order_id,o.user_id,o.order_number,o.createtime,p.p_id,p.p_name,p.p_price,p.p_code,p.p_orderimg,ad.a_id,ad.a_province,ad.a_city,ad.a_district,ad.a_daddress,ad.a_name,ad.a_phone "
					+ "from phones p,orders o,address ad  where  p.p_id(+) = o.p_id and ad.user_id(+)=o.user_id";
			// 执行查询，获取查询结果集（List+Bean）
			List<OrdersDetail> lst = EasyFactory.getNewInstance(DBProvider.class).query(strSql,
					new BeanListHandler<OrdersDetail>(OrdersDetail.class));
			// 返回查询结果集
			
			return lst;
		}

		
		/**
		 * 根据啊a_id查询地址信息
		 * 
		 * @param strAid 主键id
		 * @return 查询结果实体类
		 */
		public Address queryAddressById(String strAid) {
			// 拼写登录查询的sql语句
			String strSql = "select * from Address where a_id = ? ";
			// 执行查询，获取查询结果集（Bean）
			Address addressB = EasyFactory.getNewInstance(DBProvider.class).query(strSql,
					new BeanHandler<Address>(Address.class), strAid);
			// 返回查询结果集
			return addressB;
		}

		/**
		 * 修改地址信息 
		 * 【如果参数实体的主键值不为null，则是进行修改操作，如果为null，则是进行新增操作】
		 * 
		 * @param addressB 地址信息实体类
		 * @return 处理结果
		 */
		public int UpdateAddressB(Address addressB) {
			// 默认返回值
			int i =1;
			
				// 主键字段不为null，则进行修改操作

				// 拼写新增用户信息的sql
				StringBuilder sbSql = new StringBuilder(" update address set a_id = ? ");
				// 使用list存储sql的？占位符的条件参数
				List<Object> lstParams = new ArrayList<>();
				// 添加第一个参数，set语句的参数
				lstParams.add(addressB.getA_id());

				// 动态拼写sql语句
				// 如果收货人姓名不为空，则修改收货人
				if (addressB.getA_name() != null && !addressB.getA_name().equals("")) {
					sbSql.append(" ,a_name=? ");
					// 添加参数
					lstParams.add(addressB.getA_name());
				}

				// 如果收货人手机不为空，则修改收货人手机
				if (addressB.getA_phone() != null && !addressB.getA_phone().equals("")) {
					sbSql.append(" ,a_phone=? ");
					// 添加参数
					lstParams.add(addressB.getA_phone());
				}
				
				// 如果创建省不为空，则需该创建省
				if (addressB.getA_province() != null && !addressB.getA_province().equals("")) {
					sbSql.append(" ,a_province=? ");
					// 添加参数
					lstParams.add(addressB.getA_province());
				}
				// 如果创建市不为空，则需该创建市
				if (addressB.getA_city() != null && !addressB.getA_city().equals("")) {
					sbSql.append(" ,a_city=? ");
					// 添加参数
					lstParams.add(addressB.getA_city());
				}
				// 如果创建区不为空，则需该创建区
				if (addressB.getA_district() != null && !addressB.getA_district().equals("")) {
					sbSql.append(" ,a_district=? ");
					// 添加参数
					lstParams.add(addressB.getA_district());
				}
				// 如果创建详细地址不为空，则需该创建详细地址
				if (addressB.getA_daddress() != null && !addressB.getA_daddress().equals("")) {
					sbSql.append(" ,a_daddress=? ");
					// 添加参数
					lstParams.add(addressB.getA_daddress());
				}
				// 添加修改语句的where条件
				sbSql.append(" where a_id=? ");
				// 添加参数值
				lstParams.add(addressB.getA_id());

				// 执行修改语句
				i = EasyFactory.getNewInstance(DBProvider.class).update(sbSql.toString(), lstParams.toArray());
				System.out.println("i::::"+i);
			
			return i;
		}


}
